package com.luli.service;

import org.springframework.cglib.proxy.InvocationHandler;
import org.springframework.cglib.proxy.Proxy;

import java.lang.reflect.Method;

/**
 * 陆离
 * 2024/10/10 19:21:46
 */
public class ProxyAll implements InvocationHandler {
    private Object target;
    /**
     * 设置代理的经济人
     * @param target
     */
    public void setSinger(Object target) {
        this.target = target;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("---------------之前干点啥！比如打印日志，开启事务？--------------");
                Object returnObj = method.invoke(target, args);
        System.out.println("---------------之后干点啥！比如打印日志，关闭事务？------------------------");
        return returnObj;
    }

    /**
     * 获取一个代理对象
     * @return
     */
    public Object getProxy(){
        return Proxy.newProxyInstance(this.getClass().getClassLoader(),
                target.getClass().getInterfaces(),this);
    }
}
